Виджеты. Text Image Icon
➡️Скачать презентацию. Flutter Text Image Icon
➡️Скачать шпаргалку
➡️Ссылка на репозиторий с кодом этого урока
Виджеты для работы с текстом
Для начала сделаем в проекте рефакторинг файлов и папок
![]()
- В папке
rollsбудут все виджеты для приложения с роллами - В папке
widgetsбудут примеры виджетов для изучения - В файле
main.dartбудет функция main и виджетMyApp
Файл main.dart
import 'package:course_2025/rolls/home_widget.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: "Hello Flutter App",
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
),
home: HomeWidget(),
);
}
}
Файл home_widget.dart
import 'package:course_2025/rolls/roll_card.dart';
import 'package:flutter/material.dart';
class HomeWidget extends StatelessWidget {
const HomeWidget({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(centerTitle: true, title: const Text("Container")),
body: Center(
child: Container(
height: 250,
decoration: BoxDecoration(color: Color.fromARGB(139, 33, 149, 246)),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
// crossAxisAlignment: CrossAxisAlignment.center, // по центру у поперечной оси
// crossAxisAlignment: CrossAxisAlignment.start, // в начале поперечной оси
// crossAxisAlignment: CrossAxisAlignment.end, // в конце у поперечной оси
crossAxisAlignment: CrossAxisAlignment.stretch, // растянуть элементы
children: [
RollCard(),
RollCard(height: 250), // 👉 Виджет будет выше
RollCard(),
],
),
),
),
);
}
}
Файл roll_card.dart
import 'package:flutter/material.dart';
/// Виджет Карточка товара
/// Товар Роллы содержит картинку, описание и кнопку купить
class RollCard extends StatelessWidget {
final double height; // 👉 Виджет принимает знчение высоты
const RollCard({super.key, this.height = 200});
@override
Widget build(BuildContext context) {
return Container(
height: height, // 👉 Используем высоту через параметр
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.black),
borderRadius: BorderRadius.circular(16),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset("assets/images/roll.png", width: 100),
SizedBox(height: 10),
Text("Вкусные Роллы", style: TextStyle(fontSize: 12)),
ElevatedButton(onPressed: () {}, child: Text("Купить")),
],
),
);
}
}